package br.com.werp.regras.contabilidade;

import br.com.werp.regras.contabilidade.controle.ControleApuracao;
import br.com.werp.regras.contabilidade.controle.ControleBalancete;
import br.com.werp.regras.contabilidade.controle.ControleConfiguracao;
import br.com.werp.regras.contabilidade.controle.ControleConta;
import br.com.werp.regras.contabilidade.controle.ControleEncerramento;
import br.com.werp.regras.contabilidade.controle.ControleHistorico;
import br.com.werp.regras.contabilidade.controle.ControleImportacaoFinanceiro;
import br.com.werp.regras.contabilidade.controle.ControleLancamento;
import br.com.werp.regras.contabilidade.controle.ControleMascara;
import br.com.werp.regras.contabilidade.controle.ControlePlanoConta;
import br.com.werp.regras.contabilidade.controle.ControleRazao;
import br.com.werp.regras.contabilidade.controle.ControleRelatorioBalanco;
import br.com.werp.regras.contabilidade.controle.ControleRelatorioDiario;
import br.com.werp.regras.contabilidade.controle.ControleRelatorioLote;
import br.com.werp.regras.contabilidade.controle.ControleRelatorioPeriodo;
import br.com.werp.regras.contabilidade.controle.ControleRelatorioPesqConta;
import br.com.werp.regras.geral.Contabilidade;
import br.com.werp.regras.geral.ErroPadrao;
import br.com.werp.regras.geral.GerenciadorErros;
import br.com.werp.regras.geral.util.Util;
import br.com.werp.regras.geral.vos.contabilidade.ContaVO;
import br.com.werp.regras.geral.vos.contabilidade.HistoricoVO;
import br.com.werp.regras.geral.vos.contabilidade.LancamentoVO;
import br.com.werp.regras.geral.vos.contabilidade.PlanoContaVO;
import br.com.werp.regras.geral.vos.relatorio.RelatorioVO;

import java.util.List;
import java.util.Map;


/**
 * @author Tales,Cadufe,Sobreira
 * @data 21/10/2004
 */
public class ContabilidadeImpl implements Contabilidade {
    private static ContabilidadeImpl contabilidadeImpl;
    private ControleConta controleConta = new ControleConta();
    private ControleLancamento controleLancamento = new ControleLancamento();
    private ControlePlanoConta controlePlanoConta = new ControlePlanoConta();
    private ControleMascara controleMascara = new ControleMascara();
    private ControleHistorico controleHistorico = new ControleHistorico();
    private ControleConfiguracao controleConfiguracao = new ControleConfiguracao();
    private ControleRazao controleRazao = new ControleRazao();
    private ControleBalancete controleBalancete = new ControleBalancete();
    private ControleEncerramento controleEncerramento = new ControleEncerramento();
    private ControleApuracao controleApuracao = new ControleApuracao();
    private ControleRelatorioLote controleRelatorioLote = new ControleRelatorioLote();
    private ControleRelatorioPesqConta controleRelatorioPesqConta = new ControleRelatorioPesqConta();
    private ControleImportacaoFinanceiro controleImportacaoFinanceiro = new ControleImportacaoFinanceiro();
    private ControleRelatorioDiario controleRelatorioDiario = new ControleRelatorioDiario();
    private ControleRelatorioPeriodo acompanhamentoPeriodo = new ControleRelatorioPeriodo();
    private ControleRelatorioBalanco controleRelatorioBalancoPatrimonio =
        new ControleRelatorioBalanco();

    private ContabilidadeImpl() {
    }

    public static ContabilidadeImpl getContabilidadeImpl() {
        if (contabilidadeImpl == null) {
            contabilidadeImpl = new ContabilidadeImpl();
        }

        return contabilidadeImpl;
    }

    public void inserirContaAnalitica(Object contaAnalitica, String usuario)
        throws ErroPadrao {
        try {
            controleConta.inserirContaAnalitica(contaAnalitica, usuario);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void inserirContaSintetica(Object contaSintetica, String usuario)
        throws ErroPadrao {
        try {
            controleConta.inserirContaSintetica(contaSintetica, usuario);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public List pesquisarLoteLancamento(Object objetoValor)
        throws ErroPadrao {
        try {
            return controleLancamento.pesquisarLoteLancamento(objetoValor);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public List pesquisarLancamentoPorLote(String loteId)
        throws ErroPadrao {
        try {
            return controleLancamento.pesquisarLancamentoPorLote(loteId);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public PlanoContaVO pesquisarPlanoContaCompleto(String planoId)
        throws ErroPadrao {
        try {
            int intPlanoId = 0;

            if (planoId != null) {
                intPlanoId = Util.zeroOuInt((planoId));
            }

            PlanoContaVO planoContaVO = controlePlanoConta.pesquisarPlanoContaVO(intPlanoId);

            return planoContaVO;
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public List pesquisarContas(Object objetoValor) throws ErroPadrao {
        try {
            return controleConta.pesquisarContas(objetoValor);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public PlanoContaVO pesquisarPlanoContaPorId(String planoContaId)
        throws ErroPadrao {
        try {
            return controlePlanoConta.pesquisarPlanoContaVO(planoContaId);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public ContaVO pesquisarContaPorId(String contaId)
        throws ErroPadrao {
        try {
            return controleConta.pesquisarContaPorId(contaId);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void deletarConta(Object oConta, String usuario)
        throws ErroPadrao {
        try {
            controleConta.deletarConta(oConta, usuario);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void atualizarConta(Object oConta, String usuario)
        throws ErroPadrao {
        try {
            controleConta.atualizarConta(oConta, usuario);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public List pesquisarContasLancamento(String planoId)
        throws ErroPadrao {
        try {
            List resultado = controleConta.pesquisarContasLancamento(planoId);

            return resultado;
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public List pesquisarAnaliticasPorPlano(String planoId, Object form)
        throws ErroPadrao {
        try {
            List resultado = controleConta.pesquisarContasLancamentoPorPlano(planoId,
                    form);

            return resultado;
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public List pesquisarPlanoConta(Object planoConta, String filialId)
        throws ErroPadrao {
        try {
            List resultado = controlePlanoConta.pesquisarPlanoContaVO(planoConta,
                    filialId);

            return resultado;
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void deletarPlanoConta(String planoContaId, String usuario)
        throws ErroPadrao {
        try {
            controlePlanoConta.deletarPlanoConta(planoContaId, usuario);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void atualizarPlanoConta(Object oPlanoConta, String usuario)
        throws ErroPadrao {
        try {
            controlePlanoConta.atualizarPlanoConta(oPlanoConta, usuario);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void inserirPlanoConta(Object planoConta, String usuario)
        throws ErroPadrao {
        try {
            controlePlanoConta.inserirPlanoConta(planoConta, usuario);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    /* (non-Javadoc)
         * @see br.com.werp.regras.geral.Contabilidade#calculaNivelMaximo(java.lang.String)
         */
    public int calculaNivelMaximo(String strMascara) throws ErroPadrao {
        try {
            return controleMascara.calculaNivelMaximo(strMascara);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    /* (non-Javadoc)
         * @see br.com.werp.regras.geral.Contabilidade#cadastrarHistoricoPadrao(java.lang.String, java.lang.String)
         */
    public void cadastrarHistoricoPadrao(Object historico, String usuario)
        throws ErroPadrao {
        try {
            controleHistorico.cadastrarHistoricoPadrao(historico, usuario);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    /* (non-Javadoc)
         * @see br.com.werp.regras.geral.Contabilidade#pesquisarHistoricoPadrao(java.lang.Object)
         */
    public List pesquisarHistoricoPadrao(Object objetoValor)
        throws ErroPadrao {
        try {
            return controleHistorico.pesquisarHistoricoPadraoVO(objetoValor);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public String pesquisarTextoPadraoPorId(String histId)
        throws ErroPadrao {
        try {
            return controleLancamento.pesquisarTextoPadraoPorId(histId);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public HistoricoVO pesquisarHistoricoPadraoPorId(String histId)
        throws ErroPadrao {
        try {
            return controleHistorico.pesquisarHistoricoPadraoPorId(histId);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public LancamentoVO pesquisarLancamentoPorId(String lancId)
        throws ErroPadrao {
        try {
            return controleLancamento.pesquisarLancamentoPorId(lancId);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void deletarlancamento(String lancId, String usuario)
        throws ErroPadrao {
        try {
            controleLancamento.deletarlancamento(lancId, usuario);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void atualizarHistorico(Object oHistorico, String usuario)
        throws ErroPadrao {
        try {
            controleHistorico.atualizarHistorico(oHistorico, usuario);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void deletarHistorico(String histId, String usuario)
        throws ErroPadrao {
        try {
            controleHistorico.deletarHistorico(histId, usuario);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public int persistirLancameto(Object form, List lancamentos,
        String usuario, Map parametros) throws ErroPadrao {
        try {
            return controleLancamento.persistirLancameto(form, lancamentos,
                usuario, parametros);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void manterListaLancamento(Object form, List list, Map parametros)
        throws ErroPadrao {
        try {
            controleLancamento.manterListaLancamento(form, list, parametros);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void carregarLote(Object form, List lancamentos)
        throws ErroPadrao {
        try {
            controleLancamento.carregarLote(form, lancamentos);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    /* (non-Javadoc)
     * @see br.com.werp.regras.geral.Contabilidade#obterPessoa(java.lang.Object, java.lang.String)
     */
    public List obterPessoas(Object form, String tipo)
        throws ErroPadrao {
        try {
            return controleConfiguracao.obterPessoas(form, tipo);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    /* (non-Javadoc)
     * @see br.com.werp.regras.geral.Contabilidade#pesquisarContasClassificacao(java.lang.Object, java.lang.String[])
     */
    public List pesquisarContasClassificacao(Object objetoValor,
        String[] classificacoes) throws ErroPadrao {
        try {
            return controleConta.pesquisarContasClassificacao(objetoValor,
                classificacoes);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void excluirLote(Object form, List lancamentos, String usuario)
        throws ErroPadrao {
        try {
            controleLancamento.excluirLote(form, lancamentos, usuario);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    /* (non-Javadoc)
     * @see br.com.werp.regras.geral.Contabilidade#pesquisarContasLancamento(java.lang.Object)
     */
    public List pesquisarContasLancamento(Object form)
        throws ErroPadrao {
        try {
            return controleConta.pesquisarContasLancamento(form);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void refreshLancameto(Object form, List lancamentos, Map parametros)
        throws ErroPadrao {
        try {
            controleLancamento.refreshLancameto(form, lancamentos, parametros);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public RelatorioVO gerarRelatorioRazao(Object form, List contas,
        String requisitor, String empresa) throws ErroPadrao {
        try {
            return controleRazao.gerarRelatorioRazao(form, contas, requisitor,
                empresa);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public RelatorioVO gerarRelatorioBalancete(Object form, List contas,
        String requisitor, String empresa) throws ErroPadrao {
        try {
            return controleBalancete.gerarRelatorioBalancete(form, contas,
                requisitor, empresa);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void manterListaContasAnaliticas(Object form, List contas)
        throws ErroPadrao {
        try {
            controleRazao.manterListaContasAnaliticas(form, contas);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public List pesquisarContasAnaliticas(Object form)
        throws ErroPadrao {
        try {
            return controleConta.pesquisarContasAnaliticas(form);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void manterEncerramento(Object form, List contas, String usuario)
        throws ErroPadrao {
        try {
            controleEncerramento.manterEncerramento(form, contas, usuario);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public List pesquisarEncerramento(Object form) throws ErroPadrao {
        try {
            return controleEncerramento.pesquisarEncerramento(form);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void carregarEncerramento(Object form, List encerramentos)
        throws ErroPadrao {
        try {
            controleEncerramento.carregarEncerramento(form, encerramentos);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void carregarEncerramentoConta(Object form, List encerramentos)
        throws ErroPadrao {
        try {
            controleEncerramento.carregarEncerramentoConta(form, encerramentos);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void excluirEncerramento(Object form, String usuario)
        throws ErroPadrao {
        try {
            controleEncerramento.excluirEncerramento(form, usuario);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public List pesquisarContasSinteticas(Object form)
        throws ErroPadrao {
        try {
            return controleConta.pesquisarContasSinteticas(form);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public List pesquisarContaSintetica(Object form) throws ErroPadrao {
        try {
            return controleConta.pesquisarContaSintetica(form);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void manterListaContasSinteticas(Object form, List contas)
        throws ErroPadrao {
        try {
            controleApuracao.manterListaContasSinteticas(form, contas);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void efetuarApuracao(Object form, List contasSinteticas,
        String usuario) throws ErroPadrao {
        try {
            controleApuracao.efetuarApuracao(form, contasSinteticas, usuario);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void removerContaDaLista(List contas, Object form)
        throws ErroPadrao {
        try {
            controleEncerramento.removerContaDaLista(contas, form);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void manterListaContasEncerramento(Object form, List contas)
        throws ErroPadrao {
        try {
            controleEncerramento.manterListaContasEncerramento(form, contas);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public List pesquisarApuracao(Object form) throws ErroPadrao {
        try {
            return controleApuracao.pesquisarApuracao(form);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void removerApuracao(Object form, String usuario)
        throws ErroPadrao {
        try {
            controleApuracao.removerApuracao(form, usuario);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public RelatorioVO gerarRelatorioPlanoConta(Object form, List contas,String usuario,String empresa)
        throws ErroPadrao {
        try {
            return controlePlanoConta.gerarRelatorioPlanoConta(form, contas,usuario,empresa);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void manterListaRelatorioLancamento(Object form,
        List relatorioLancamento) throws ErroPadrao {
        try {
            controleRelatorioLote.manterListaRelatorioLancamento(form,
                relatorioLancamento);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public RelatorioVO gerarRelatorioLotesLancamentos(Object form,
        String usuario, List lotes) throws ErroPadrao {
        try {
            return controleRelatorioLote.gerarRelatorioLotesLancamentos(form,
                usuario, lotes);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void carregarLancamento(Object form) throws ErroPadrao {
        try {
            controleLancamento.carregarLancamento(form);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void salvarLancamento(Object form, String usuario)
        throws ErroPadrao {
        try {
            controleLancamento.salvarLancamento(form, usuario);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public List pesquisarConta(Object form) throws ErroPadrao {
        try {
            return controleRelatorioPesqConta.pesquisarConta(form);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void salvarConfiguracaoContabil(Object form, String usuario,
        List composicoes) throws ErroPadrao {
        try {
            controleConfiguracao.salvarConfiguracaoContabil(form, usuario,
                composicoes);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public List pesquisarConfiguracaoContabil(Object form)
        throws ErroPadrao {
        try {
            return controleConfiguracao.pesquisarConfiguracaoContabil(form);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void carregarConfiguracaoContabil(Object form, List composicoes)
        throws ErroPadrao {
        try {
            controleConfiguracao.carregarConfiguracaoContabil(form, composicoes);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public List pesquisarPessoa(Object form) throws ErroPadrao {
        try {
            return controleConfiguracao.pesquisarPessoa(form);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void manterConfiguracaoContabil(Object form, List composicoes)
        throws ErroPadrao {
        try {
            controleConfiguracao.manterConfiguracaoContabil(form, composicoes);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public List pesquisarHistorico(Object form) throws ErroPadrao {
        try {
            return controleHistorico.pesquisarHistorico(form);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public List pesquisarDocumentoImportacao(Object form)
        throws ErroPadrao {
        try {
            return controleImportacaoFinanceiro.pesquisarDocumentoImportacao(form);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public List gerarListaLoteImportacaoFinanceiro(Object form,
        List documentos, String usuario) throws ErroPadrao {
        try {
            return controleImportacaoFinanceiro.gerarListaLoteImportacaoFinanceiro(form,
                documentos, usuario);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public RelatorioVO simularImportacaoFinanceiro(Object form, List documentos)
        throws ErroPadrao {
        try {
            return controleRelatorioLote.simularImportacaoFinanceiro(form,
                documentos);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public boolean verificarExistenciaConfiguracaoContabil(int tcme_id)
        throws ErroPadrao {
        try {
            return controleConfiguracao.verificarExistenciaConfiguracaoContabil(tcme_id);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public RelatorioVO gerarRelatorioDiario(Object form, String requisitor,
        String empresa) throws ErroPadrao {
        try {
            return controleRelatorioDiario.gerarRelatorioDiario(form,
                requisitor, empresa);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public RelatorioVO gerarRelatorioAcompanhamentoPeriodo(Object form,
        String requisitor, String empresa, List contas)
        throws ErroPadrao {
        try {
            return acompanhamentoPeriodo.gerarRelatorioAcompanhamentoPeriodo(form,
                requisitor, empresa, contas);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public List gravarLotesImportacaoFinanceiro(Object form, List documentos,
        String usuario) throws ErroPadrao {
        try {
            return controleImportacaoFinanceiro.gravarLotesImportacaoFinanceiro(form,
                documentos, usuario);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void verificaLoteImportado(int docm_id) throws ErroPadrao {
        try {
            controleImportacaoFinanceiro.verificaLoteImportado(docm_id);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public RelatorioVO gerarRelatorioBalancoPatrimonio(Object form,
        String usuario, String empresa) throws ErroPadrao {
        try {
            return controleRelatorioBalancoPatrimonio.gerarRelatorioBalancoPatrimonio(form,
                usuario, empresa);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }
}
